package com.code.Factorial;

import java.util.Arrays;

/**
 * Username : YouQiRong
 * Date : 2025/5/19 20:24
 * Class: 递归冒泡(这个版本可以优化成，对于未排序的部分已排序好的，不进行递归，这样就减少了递归次数)
 * 数组化成两个区间[0，j],[j+1,length - 1]
 * [0,j] 未排序
 * [j+1,length - 1] 已排序
 * 未排序区间，相邻的两个元素比较，前者大于后者则交换位置，直到索引为 0 停止。
 */
public class BubbleSort {
    /**
     * 封装一下，这样用户不考虑边界问题
     * @param arr
     */
    public static void bubbleSort(int[] arr) {
        bubble(arr,arr.length - 1);
    }

    private static void bubble(int[] arr , int j){
        if (j == 0){
            return;
        }
        for (int i = 0; i < j; i++) {
            if (arr[i] > arr[j]){
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        bubble(arr,j - 1);
    }


    public static void main(String[] args) {
        int[] a = new int[]{5, 4, 3, 2, 1};
        System.out.println(Arrays.toString(a));
        bubbleSort(a);
        System.out.println(Arrays.toString(a));
    }
}
